<!DOCTYPE html>
<html lang="zh-cn">
	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		 
			
  
    <meta name="twitter:card" content="summary"/>
    
      <meta name="twitter:image" content="https://www.samrainhan.com/images/avatar.png" />
    
  
  
  <meta name="twitter:title" content="OpenResty第三方模块"/>
  <meta name="twitter:description" content="LuaJIT 1.5.8.1后默认安装，是Lua的实时编译器 ArrayVarNginxModule 在nginx配置文件中使用数组变量 AuthRequestNginxModule 身份验证，允许基于子请求的验证，它工作在接入阶段，因此"/>
  
  
  
  
    <meta name="twitter:creator" content="@韩雨"/>
  



		
		<meta name="author" content="韩雨">
		<meta name="description" content="学习 &amp;nbsp;&amp;bull;&amp;nbsp; 生活">
		<meta name="generator" content="Hugo 0.52" />
		<title>OpenResty第三方模块 &middot; sam的小窝</title>
		<link rel="shortcut icon" href="https://www.samrainhan.com/images/favicon.ico">
		<link rel="stylesheet" href="https://www.samrainhan.com/css/style.css">
		<link rel="stylesheet" href="https://www.samrainhan.com/css/highlight.css">

		
		<link rel="stylesheet" href="https://www.samrainhan.com/css/font-awesome.min.css">
		

		
		<link href="https://www.samrainhan.com/index.xml" rel="alternate" type="application/rss+xml" title="sam的小窝" />
		

		
	</head>

    <body>
       <nav class="main-nav">
	
	
		<a href='https://www.samrainhan.com/'> <span class="arrow">←</span>Home</a>
	
	<a href='https://www.samrainhan.com/posts'>Archive</a>
	<a href='https://www.samrainhan.com/tags'>Tags</a>
	<a href='https://www.samrainhan.com/about'>About</a>

	

	
	<a class="cta" href="https://www.samrainhan.com/index.xml">Subscribe</a>
	
</nav>


        <section id="wrapper" class="post">
            <article>
                <header>
                    <h1>
                        OpenResty第三方模块
                    </h1>
                    <h2 class="headline">
                    Mar 7, 2015 00:00
                    · 2535 words
                    · 6 minute read
                      <span class="tags">
                      
                      
                          
                              <a href="https://www.samrainhan.com/tags/linux">linux</a>
                          
                              <a href="https://www.samrainhan.com/tags/nginx">nginx</a>
                          
                              <a href="https://www.samrainhan.com/tags/openresty">openresty</a>
                          
                              <a href="https://www.samrainhan.com/tags/%E6%A8%A1%E5%9D%97">模块</a>
                          
                      
                      
                      </span>
                    </h2>
                </header>
                
                  
                
                <section id="post-body">
                    <p><code>LuaJIT</code> 1.5.8.1后默认安装，是Lua的实时编译器</p>

<p><code>ArrayVarNginxModule</code> 在nginx配置文件中使用数组变量</p>

<p><code>AuthRequestNginxModule</code> 身份验证，允许基于子请求的验证，它工作在接入阶段，因此可以很好地与其他接入模块（access，auth_basic）合作。</p>

<p><code>CoolkitNginxModule</code> 默认安装，收集了很多有用的小模块，？/todo <a href="https://github.com/FRiCKLE/ngx_coolkit/">https://github.com/FRiCKLE/ngx_coolkit/</a></p>

<p><code>DrizzleNginxModule</code> nginx上游模块，用libdrizzle访问MySQL和Drizzle。如果使用了LuaNginxModule，建议改用LuaRestyMySQLLibrary，因为这个模块更复杂更占内存</p>

<p><code>EchoNginxModule</code> 包含很多Nginx的内部API用于流的输入和输出，并行/顺序子请求，定时器和睡眠，以及各种元数据的访问。它提供了各种工具，通过模拟不同类型的子请求，帮助测试和调试其他模块。</p>

<p><code>EncryptedSessionNginxModule</code> 提供了基于Mac上AES-256对Nginx变量进行加密和解密。通常使用SetMiscNginxModule和标准rewrite模块的指令。该模块可用于实现Web应用程序的简单的用户登录和访问控制。</p>

<p><code>FormInputNginxModule</code> 读取HTTP POST和PUT请求报文中的&rdquo;application/x-www-form-urlencoded&rdquo;内容,，并在解析其中参数并赋值给nginx变量。</p>

<p><code>HeadersMoreNginxModule</code> 允许添加、设置或者清除任何请求和响应头，是标准头模块的增强版，因为它提供更多的工具，比如重置或清除“builtin headers”比如~Content-Type, ~Content-Length, and Server.</p>

<p><code>IconvNginxModule</code> 使用libiconv来转换不同编码的字符。提供了set_iconv和iconv_filter命令，既可以处理nginx变量又能作为一个输出过滤器处理响应报文</p>

<p><code>StandardLuaInterpreter</code> 默认安装，如果LuaJIT允许使用，那么它会自动关闭。</p>

<p><code>MemcNginxModule</code> 扩展了标准的memcached模块，支持几乎整个memcached的ASCII协议。 当与LuaNginxModule一起使用时，建议使用这一个LuaRestyMemcachedLibrary代替，因为它更灵活和存储器效率更高。</p>

<p><code>LuaNginxModule</code> 该模块将Lua解释器或LuaJIT2.0嵌入到nginx的核心，通过cosockets和Nginx的子请求的方式集成了强大的Lua线程（又名Lua协程）到Nginx的事件模型。</p>

<p><code>Nginx</code> Nginx的是一个免费的，开源的，高性能的HTTP和反向代理服务器，也是一个IMAP/POP3代理服务器。</p>

<p><code>NginxDevelKit</code> 用来作为其他的Nginx模块的基础，被设计用来扩展Nginx webserver的核心功能。</p>

<p><code>LuaCjsonLibrary</code> 默认安装，是一个lua c模块，加快Lua解析和编码JSON的速度</p>

<p><code>LuaRdsParserLibrary</code> 默认安装，为了最大限度地提高速度和减少内存占用，这个库是用纯C语言实现的。用于将DrizzleNginxModule和PostgresNginxModule模块生成的Resty-DBD-Stream格式数据解析成Lua数据结构。过去我们必须用JSON作为中间数据格式，在内存和CPU方面的效率非常低</p>

<p><code>LuaRedisParserLibrary</code> Redis的解析器库实现了即轻又快的原始数据响应解析器，构建相应的LUA数据结构，同时还能构建Redis的原始请求。</p>

<p><code>LuaRestyCoreLibrary</code> 默认安装，用LuaJIT FFI重新实现了LuaNginxModule提供的Lua API</p>

<p><code>LuaRestyDNSLibrary</code> 默认安装，基于cosocket API对于LuaNginxModule的非阻塞DNS解析</p>

<p><code>LuaRestyLockLibrary</code> 默认安装，基于LuaNginxModule的共享内存字典实现一个简单的非阻塞互斥锁API。用在消除“狗桩效应”（指缓存失效时，同时有很多请求访问导致同时更新缓存把服务搞挂）上。</p>

<p><code>LuaRestyLrucacheLibrary</code> 默认安装，实现了一个Lua-land LRU 缓存（近期最少使用算法，是为虚拟页式存储管理服务的，减少进程耗费的内存空间）。</p>

<p><code>LuaRestyMemcachedLibrary</code> 默认安装，基于cosocket API为LuaNginxModule做的Memcached客户端驱动</p>

<p><code>LuaRestyMySQLLibrary</code> 默认安装，基于cosocket API为LuaNginxModule做的MySQL客户端驱动</p>

<p><code>LuaRestyRedisLibrary</code> 默认安装，基于cosocket API为LuaNginxModule做的Redis客户端驱动</p>

<p><code>LuaRestyStringLibrary</code> 默认安装，为LuaNginxModule提供字符串工具和普通Hash函数</p>

<p><code>LuaRestyUploadLibrary</code> 默认安装，基于LuaNginxModule的cosocket API，读和解析http方式上传文件的流数据</p>

<p><code>LuaRestyUpstreamHealthcheckLibrary</code> 默认安装，用纯lua写的对于Nginx上游服务器的健康检查</p>

<p><code>LuaRestyWebSocketLibrary</code> 默认安装，基于LuaNginxModule的cosocket API，实现了非阻塞式的WebSocke服务端和客户端</p>

<p><code>LuaUpstreamNginxModule</code> 为了经典Nginx的上行信道，公开了一个Lua API给LuaNginxModule</p>

<p><code>PostgresNginxModule</code> ngx_postgres是一个上行模块，允许nginx直接同PostgreSQL数据库通信，回应数据变为RDS格式，所以它和RdsJsonNginxModule和DrizzleNginxModule兼容。</p>

<p><code>RdsCsvNginxModule</code> 默认安装，实现了一个输出过滤器，用来转换数据从RDS格式变为CSV格式</p>

<p><code>RdsJsonNginxModule</code> 实现一个输出过滤器，用来转换数据从RDS格式变为JSON流</p>

<p><code>RedisNginxModule</code> 默认安装，是个上行模块使得nginx可以同redis2.x服务进行非阻塞对话，它同标准的ngx_memcached模块有相同的接口，但是只支持Redis的GET和SELECT命令。从Redis服务器返回解码结果。当使用LuaNginxModule时，会使用LuaRestyRedisLibrary而不是这个，因为它更复杂而且占内存。</p>

<p><code>Redis2NginxModule</code> 默认安装，是个上行模块使得nginx可以同redis2.x服务进行非阻塞对话，实现了全部Redis2.0定义协议包括支持redis管道。从Redis服务器返回原始TCP回应。当使用LuaNginxModule时，会使用LuaRestyRedisLibrary而不是这个，因为它更复杂而且占内存。</p>

<p><code>SetMiscNginxModule</code> 在Nginx重写模块上增加了很多set_XXX指令，这个模块提供的每个指令都可以方便的同其他nginx重写模块的指令混合使用，比如if和set</p>

<p><code>SrcacheNginxModule</code> 可以在nginx上任意位置提供一个透明缓存层，比如那些使用上行甚至静态磁盘文件。通常，MemcNginxModule是连同该模块用于提供具体的高速缓冲存储器的后端。但在技术上，任何模块都可以提供了一个REST接口来取得和存储子请求。</p>

<p><code>XssNginxModule</code> 增加跨域AJAX支持，目前只支持跨域的GET请求</p>

                </section>
            </article>

            
                <a class="twitter" href="https://twitter.com/intent/tweet?text=https%3a%2f%2fwww.samrainhan.com%2fposts%2f2015-03-07-openresty-third-party-modules%2f - OpenResty%e7%ac%ac%e4%b8%89%e6%96%b9%e6%a8%a1%e5%9d%97 "><span class="icon-twitter"> tweet</span></a>

<a class="facebook" href="#" onclick="
    window.open(
      'https://www.facebook.com/sharer/sharer.php?u='+encodeURIComponent(location.href),
      'facebook-share-dialog',
      'width=626,height=436');
    return false;"><span class="icon-facebook-rect"> Share</span>
</a>

            

            
                <div id="disqus_thread"></div>
<script type="text/javascript">
    var disqus_shortname = 'samrainblogbygithub'; 

     
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</div>

            

            
                <ul id="post-list" class="archive readmore">
    <h3>Read more</h3>

    
    
    
        <li>
            <a href="/posts/2019-04-26-c9-move-to-aws-c9/">Cloud9 Move to Aws C9<aside class="dates">Apr 26 2019</aside></a>
        </li>
    
        <li>
            <a href="/posts/2019-02-16-why-build-blog-with-cloud9/">2019 02 16 Why Build Blog With Cloud9<aside class="dates">Feb 16 2019</aside></a>
        </li>
    
        <li>
            <a href="/posts/2018-09-12-sports-stretching-best-practices/">运动拉伸最佳实践<aside class="dates">Sep 12 2018</aside></a>
        </li>
    
        <li>
            <a href="/posts/2018-09-12-add-2-files-to-tempdb-for-caching/">给tempdb加2个文件做缓存<aside class="dates">Sep 12 2018</aside></a>
        </li>
    
        <li>
            <a href="/posts/2018-09-12-look-for-sql-server-tables-without-a-clustered-index/">如何找到没有聚集索引的表<aside class="dates">Sep 12 2018</aside></a>
        </li>
    
        <li>
            <a href="/posts/2018-09-12-the-continuous-delivery-maturity-model/">持续实施成熟度模型<aside class="dates">Sep 12 2018</aside></a>
        </li>
    
        <li>
            <a href="/posts/2018-09-12-map-of-continuous-delivery/">持续发布的各个阶段<aside class="dates">Sep 12 2018</aside></a>
        </li>
    
        <li>
            <a href="/posts/2018-09-12-how-dropbox-securely-stores-your-passwords/">Dropbox的用户密码加密机制<aside class="dates">Sep 12 2018</aside></a>
        </li>
    
        <li>
            <a href="/posts/2018-09-12-code-inspection-tool-for-net/">NET代码检查工具<aside class="dates">Sep 12 2018</aside></a>
        </li>
    
        <li>
            <a href="/posts/2018-09-12-how-to-make-unique-id/">怎样生成唯一ID<aside class="dates">Sep 12 2018</aside></a>
        </li>
    
</ul>

            

            <footer id="footer">
    
        <div id="social">

	
	
    <a class="symbol" href="">
        <i class="fa fa-facebook-square"></i>
    </a>
    
    <a class="symbol" href="https://github.com/samrain">
        <i class="fa fa-github-square"></i>
    </a>
    
    <a class="symbol" href="">
        <i class="fa fa-twitter-square"></i>
    </a>
    


</div>

    
    <p class="small">
    
       © Copyright 2019 <i class="fa fa-heart" aria-hidden="true"></i> 韩雨
    
    </p>
    <p class="small">
        Powered by <a href="http://www.gohugo.io/">Hugo</a> Theme By <a href="https://github.com/nodejh/hugo-theme-cactus-plus">nodejh</a>
    </p>
</footer>

        </section>

        <script src="https://www.samrainhan.com/js/jquery-3.3.1.min.js"></script>
<script src="https://www.samrainhan.com/js/main.js"></script>
<script src="https://www.samrainhan.com/js/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>




  
<script type="application/javascript">
var doNotTrack = false;
if (!doNotTrack) {
	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
	(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
	m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
	})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
	ga('create', 'UA-37708730-1', 'auto');
	
	ga('send', 'pageview');
}
</script>





    </body>
</html>
